/***************************************************
 * 此文件的版权归属xxxx公司所有，未经允许，请勿复制
 */
package com.pxxy.cels.entity;

import java.io.Serializable;
import java.util.Arrays;

import com.pxxy.cels.util.IdGenerator;

/************************************************
 * @author yejf
 * @since JDK7.0
 * @CreateDate 2020年4月7日 上午10:49:42 
 * @description 此类用来描述了Word和Vocabulary 的父类
 *
 */
public abstract class BaseTerm implements Serializable, Comparable<BaseTerm> {
	
	/**
	 * 
	 */
	private static final long serialVersionUID = -9003543266926734257L;

	private long id; //编号，可以自动生成
	
	private String en; //单词
	
	private String[] cn; // 中文解释，可能有多个
	
	private String catagory = "计算机英语"; //备用属性

	/**
	 * @param en
	 * @param cn
	 */
	public BaseTerm(String en, String[] cn) {
		//初始化id的值
		this.id = IdGenerator.getID();
		//
		this.en = en;
		this.cn = cn;
	}

	/**
	 * 
	 */
	public BaseTerm() {
	}

	/**
	 * @return the en
	 */
	public String getEn() {
		return en;
	}

	/**
	 * @param en the en to set
	 */
	public void setEn(String en) {
		this.en = en;
	}

	/**
	 * @return the cn
	 */
	public String[] getCn() {
		return cn;
	}

	/**
	 * @param cn the cn to set
	 */
	public void setCn(String[] cn) {
		this.cn = cn;
	}

	/**
	 * @return the catagory
	 */
	public String getCatagory() {
		return catagory;
	}

	/**
	 * @param catagory the catagory to set
	 */
	public void setCatagory(String catagory) {
		this.catagory = catagory;
	}

	/**
	 * @return the id
	 */
	public long getId() {
		return id;
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((en == null) ? 0 : en.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		BaseTerm other = (BaseTerm) obj;
		if (en == null) {
			if (other.en != null)
				return false;
		} else if (!en.equals(other.en))
			return false;
		return true;
	}

	@Override
	public String toString() {
		StringBuilder builder = new StringBuilder();
		builder.append("BaseTerm [id=").append(id).append(", en=").append(en).append(", cn=")
				.append(Arrays.toString(cn)).append(", catagory=").append(catagory).append("]");
		return builder.toString();
	}
	
	@Override
	public int compareTo(BaseTerm o) {
		//按英文字母的顺序排序
		return this.en.compareTo(o.en);
	}
}
